<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Java OpenGL</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Java_OpenGL"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Java_OpenGL rootpage-Java_OpenGL skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Java OpenGL</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><div class="infobox_v3 infobox infobox--frwiki noarchive" style="width:260px">
<div class="entete icon informatique" style="color: #000000;"><style data-mw-deduplicate="TemplateStyles:r228712691">
/* start https://fr.wikipedia.org/ */
.mw-parser-output .entete.informatique{background-image:url("./_mw_/Picto.nfo.png")}
/* end https://fr.wikipedia.org/ */
</style>
<div>Java OpenGL</div>
</div>
<p class="mw-empty-elt">
</p>
<div class="images">
</div>
<table><caption style="color:#000000;">Informations</caption>
<tbody><tr>
<th scope="row">Créateur</th>
<td>
<span class="wd_p170">Kenneth Bradley Russell <small>(<a href="https://www.wikidata.org/wiki/Q130265260" class="extiw external" title="d:Q130265260"><span class="indicateur-langue" title="Voir l'élément Wikidata correspondant">d</span></a>)</small> et Christopher John Kline <small>(<a href="https://www.wikidata.org/wiki/Q130265355" class="extiw external" title="d:Q130265355"><span class="indicateur-langue" title="Voir l'élément Wikidata correspondant">d</span></a>)</small></span></td>
</tr>
<tr>
<th scope="row"> <a href="Langage_de_programmation" title="Langage de programmation">Écrit en</a>
</th>
<td>
<span class="wd_p277"><a href="Java_(langage)" title="Java (langage)">Java</a></span></td>
</tr>
<tr>
<th scope="row"><a href="Plateforme_informatique" title="Plateforme informatique">Environnement</a></th>
<td>
<span class="wd_p400"><a href="Machine_virtuelle_Java" title="Machine virtuelle Java">Machine virtuelle Java</a></span></td>
</tr>
<tr>
<th scope="row"> Type
</th>
<td>
<span class="wd_p31"><a href="Biblioth%C3%A8que_logicielle" title="Bibliothèque logicielle">Bibliothèque logicielle</a><br>Bibliothèque Java <small>(<a href="https://www.wikidata.org/wiki/Q21127166" class="extiw external" title="d:Q21127166"><span class="indicateur-langue" title="Voir l'élément Wikidata correspondant">d</span></a>)</small></span></td>
</tr>
<tr>
<th scope="row"><a href="Licence_de_logiciel" title="Licence de logiciel">Licence</a></th>
<td>
<span class="wd_p275">BSD 2-clauses <small>(<a href="https://en.wikipedia.org/wiki/Simplified_BSD_license" class="extiw external" title="en:Simplified BSD license"><span class="indicateur-langue" title="Article sur Wikipédia en anglais">en</span></a>)</small></span></td>
</tr>
<tr>
<th scope="row"><a href="Site_web" title="Site web">Site web</a></th>
<td>
<span class="wd_p856"><a rel="nofollow" class="external text" href="https://jogamp.org/jogl/www/">jogamp.org/jogl/www</a></span></td>
</tr>
</tbody></table>
<p class="mw-empty-elt">
</p>
</div>
<p><b>Java OpenGL</b> (<b>JOGL</b>) est une bibliothèque qui permet d'utiliser <a href="OpenGL" title="OpenGL">OpenGL</a> avec le <a href="Java_(programming_language)" class="mw-redirect" title="Java (programming language)">langage de programmation Java</a><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>. Elle était développée à l'origine par Kenneth Bradley Russell et Christopher John Kline, et fut développée par la suite par le <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> Game Technology Group. Depuis 2010, c'est un projet <a href="Open_source" title="Open source">open source</a> indépendant sous <a href="Licence_BSD" title="Licence BSD">licence BSD</a>. C'est l'implémentation de référence de Java Bindings for OpenGL (JSR-231).
</p><p>JOGL permet d'accéder à la plupart des fonctionnalités disponibles en <a href="C_(langage)" title="C (langage)">C</a>, à l'exception notable des appels OpenGL utility toolkit (GLUT) relatifs au <a href="Syst%C3%A8me_de_fen%C3%AAtrage" title="Système de fenêtrage">système de fenêtrage</a>, comme Java a les siens, <a href="Abstract_Window_Toolkit" title="Abstract Window Toolkit">Abstract Window Toolkit</a> (AWT), <a href="Swing_(Java)" title="Swing (Java)">Swing</a>, et quelques <a href="OpenGL#Extensions" title="OpenGL">extensions</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Architecture">Architecture</h2></div>
<p>L'API de base en <a href="OpenGL" title="OpenGL">OpenGL</a> <a href="C_(langage)" title="C (langage)">C</a> API, ainsi que son <a href="OpenGL_utility_library" title="OpenGL utility library">API de fenêtrage</a> associée<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>, sont accédées en JOGL <i>via</i> des appels <a href="Java_Native_Interface" title="Java Native Interface">Java Native Interface</a> (JNI). Pour cette raison, le système sousjacent doit supporter OpenGL pour que JOGL fonctionne.
</p><p>JOGL diffère des quelques autres bibliothèques en Java enveloppant OpenGL en cela qu'il expose plus ou moins l'API procédurale d'OpenGL <i>via</i> des méthodes dans peu de classes, plutôt que d'essayer d'appliquer le paradigme de la <a href="Programmation_orient%C3%A9e_objet" title="Programmation orientée objet">programmation orientée objet</a> à OpenGL. Ainsi, une grande partie du code de JOGL est auto-générée à partir des fichiers d'entête d'OpenGL en C <i>via</i> un outil de conversion appelé <i><a href="GlueGen" title="GlueGen">GlueGen</a></i>, qui avait été programmé spécialement pour faciliter la création de JOGL.
</p><p>Cette décision d'architecture a à la fois ses avantages et ses inconvénients. La nature procédurale et sous forme de machine à états d'OpenGL se marie mal avec la manière typique de programmer en Java, ce qui est fastidieux pour beaucoup de programmeurs. Cependant, la correspondance directe entre l'API OpenGL en C et les méthodes Java rend le portage d'applications existantes écrites en C et des exemples de code bien plus simple. La fine couche d'abstraction fournie par JOGL rend l'exécution efficace, mais elle est plus difficile à coder en comparaison à des bibliothèques d'abstraction de haut niveau tel que <a href="Java3D" class="mw-redirect" title="Java3D">Java3D</a>. Comme la plupart du code est auto-générée, les changements d'OpenGL peuvent être rapidement ajoutés à JOGL.
</p>
<div class="mw-heading mw-heading2"><h2 id="Statut_et_standardisation">Statut et standardisation</h2></div>
<p>À partir de 2007, JOGL fournit un accès complet à la spécification <a href="OpenGL" title="OpenGL">OpenGL</a> 2.0. La dernière version <b>1.1.0</b> est l'implémentation de référence pour JSR-231 (Java Bindings for OpenGL)<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>. La version <b>1.1.1</b> donne un accès limité aux <a href="OpenGL_utility_library" title="OpenGL utility library">GLU</a> NURBS, permettant le rendu de courbes et de surfaces par le biais des APIs traditionnelles de GLU.
</p><p>La version 2.0.2 ajoute le support des versions d'OpenGL jusqu'à 4.3 et des versions d'OpenGL-ES 1, 2, and 3.
</p>
<div class="mw-heading mw-heading2"><h2 id="Java2D-OpenGL_inter-operabilité"><span id="Java2D-OpenGL_inter-operabilit.C3.A9"></span>Java2D-OpenGL inter-operabilité</h2></div>
<p>Depuis la version <a href="Java_SE_6" class="mw-redirect" title="Java SE 6">Java SE 6</a> du langage <a href="Java_(programming_language)" class="mw-redirect" title="Java (programming language)">Java</a>, <a href="Java2D" title="Java2D">Java2D</a> (l'<a href="Interface_de_programmation" title="Interface de programmation">API</a> pour dessiner en 2D en Java) et JOGL sont devenus inter-opérables, ce qui permet :
</p>
<ul><li>Superposer des composants <a href="Swing_(Java)" title="Swing (Java)">Swing</a> (menus légers, bulles, et d'autres <a href="Widget_(computing)" class="mw-redirect" title="Widget (computing)">widgets</a>) au-dessus du rendu <a href="OpenGL" title="OpenGL">OpenGL</a>.</li>
<li>Dessiner des graphismes 3D en <a href="OpenGL" title="OpenGL">OpenGL</a> au-dessus du rendu <a href="Java2D" title="Java2D">Java2D</a> (voir <a rel="nofollow" class="external text" href="http://www.curious-creature.org/2005/12/21/a-swing-button-with-3d-source-codedemo/">ici</a> pour un bouton avec une icône en OpenGL).</li>
<li>Utiliser des graphismes 3D n'importe où, ordinairement, un <a href="Widget_(computing)" class="mw-redirect" title="Widget (computing)">widget</a> <a href="Swing_(Java)" title="Swing (Java)">Swing</a> pourrait être utilisé (à l'intérieur d'une JTable, JTree, ...).</li>
<li>Dessiner des graphismes <a href="Java2D" title="Java2D">Java2D</a> au-dessus d'un rendu 3D en <a href="OpenGL" title="OpenGL">OpenGL</a>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<ul><li>Java Bindings for OpenGL, The Java Community Specification Request for which JOGL provides an implementation</li>
<li><a href="Ardor3D" class="mw-redirect" title="Ardor3D">Ardor3D</a>, un scénographe très performant, professionnel utilisant JOGL</li>
<li>Xith3D, un scénographe utilisant JOGL</li>
<li>Elflight Engine, un moteur de jeu très performant optimisé pour le Web</li>
<li><a href="JMonkey_Engine" title="JMonkey Engine">JMonkey Engine</a>, un scénographe très performant, professionnel utilisant JOGL (uniquement dans JMonkeyEngine 2.0, support non officiel dans JMonkeyEngine 3)</li>
<li><a href="Wakfu_(jeu_vid%C3%A9o)" title="Wakfu (jeu vidéo)">Wakfu</a>, un jeu de rôle multijoueur en ligne utilisant JOGL</li>
<li>Poxnora, un jeu multijoueur en ligne utilisant JOGL</li>
<li>Wurm Online, un MMORPG dans un univers fantastique utilisant JOGL</li>
<li><a href="RuneScape" title="RuneScape">RuneScape</a>, un MMORPG utilisant JOGL</li>
<li>Jake2, le portage Java de <a href="Quake_II" title="Quake II">Quake II</a> utilisant JOGL comme API graphique de bas niveau</li>
<li><a href="Scilab" title="Scilab">Scilab</a>, un programme de calcul numérique utilisant JOGL pour le rendu 2D et 3D</li>
<li><a rel="nofollow" class="external text" href="http://www3.math.tu-berlin.de/jreality/">Jreality</a>, un paquetage de <a href="Visualisation_scientifique" title="Visualisation scientifique">visualisation scientifique</a> utilisant JOGL</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Références"><span id="R.C3.A9f.C3.A9rences"></span>Références</h2></div>
<div class="references-small decimal" style=""><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a> </span><span class="reference-text"><span class="ouvrage" id="2008">« <a rel="nofollow" class="external text" href="http://www.javaworld.com/javaworld/jw-09-2008/jw-09-opensourcejava-jogl.html"><cite style="font-style:normal;">Open source Java projects: Java Binding for OpenGL (JOGL)</cite></a> », <a href="JavaWorld" class="mw-redirect" title="JavaWorld">JavaWorld</a>, <time class="nowrap" datetime="2008-09-18" data-sort-value="2008-09-18">18 septembre 2008</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2011-02-06" data-sort-value="2011-02-06">6 février 2011</time>)</small></span> : <span class="citation">« <i>JOGL originated as a project named Jungle, which was created by 3D graphics experts Ken Russell (of Sun Microsystems) and Chris Kline (of Irrational Games).</i> »</span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text"><span class="ouvrage" id="2005">« <a rel="nofollow" class="external text" href="http://www.javaworld.com/javaworld/jw-02-2005/jw-0221-jogl.html"><cite style="font-style:normal;">Hello JOGL</cite></a> », <a href="JavaWorld" class="mw-redirect" title="JavaWorld">JavaWorld</a>, <time class="nowrap" datetime="2005-02-21" data-sort-value="2005-02-21">21 février 2005</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2011-02-06" data-sort-value="2011-02-06">6 février 2011</time>)</small></span></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a> </span><span class="reference-text"><span class="ouvrage" id="2010">« <a rel="nofollow" class="external text" href="http://jogamp.org/doc/siggraph2010/jogamp-siggraph2010.pdf"><cite style="font-style:normal;">3D & Multimedia Across Platforms and Devices Using JOGL</cite></a> », <a href="SIGGRAPH" title="SIGGRAPH">SIGGRAPH</a>, <time class="nowrap" datetime="2010-07-27" data-sort-value="2010-07-27">27 juillet 2010</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2011-02-06" data-sort-value="2011-02-06">6 février 2011</time>)</small></span></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="http://jcp.org/aboutJava/communityprocess/final/jsr231/index.html"><cite style="font-style:normal;">JSR-000231 Java Bindings for the OpenGL API</cite></a> », <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2011-02-06" data-sort-value="2011-02-06">6 février 2011</time>)</small></span> : <span class="citation">« <i>In order to facilitate maximum community participation for the Java Binding for the OpenGL API, we use the JOGL project on java.net found at <a rel="nofollow" class="external free" href="https://jogl.dev.java.net">https://jogl.dev.java.net</a>. The JOGL source code can be found there, licensed under a liberal source code license (mostly licensed as BSD except where we use other parties' licensed code). We take a snapshot of the code from this project every few months, run the Technology Compatibility Kit on the source code, and then officially make it the Reference Implementation for each formal Java Binding for the OpenGL API release.</i> »</span></span>
</li>
</ol></div>
</div>
<div class="mw-heading mw-heading2"><h2 id="Liens_externes">Liens externes</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://jogamp.org">Site officiel</a></li>
<li><a rel="nofollow" class="external text" href="http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/">Spécification de JOGL 2.x</a></li>
<li><a rel="nofollow" class="external text" href="http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html">Spécification de la JSR 231 (draft)</a></li>
<li><a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=231">JSR-231 Java Bindings for OpenGL</a> site web</li>
<li><a rel="nofollow" class="external text" href="http://ak.kiet.le.googlepages.com/theredbookinjava.html">tool kiet</a>, Le guide de la programmation OpenGL avec des exemples utilisant JOGL</li>
<li><a rel="nofollow" class="external text" href="http://nehe.gamedev.net/">Tutoriels de Nehe et exemples de code</a></li>
<li><a rel="nofollow" class="external text" href="http://timelessname.com/jogl/lesson01/">Paramétrer JOGL dans Eclipse</a></li>
<li><a rel="nofollow" class="external text" href="http://www.leolol.com/tutorials/graphics/lesson01.php">Paramétrer JOGL dans une JFrame Swing</a></li>
<li><a rel="nofollow" class="external text" href="http://projectkenai.com/projects/netbeans-opengl-pack">NetBeans OpenGL Pack</a>, plug-in de développement en OpenGL pour l'EDI <a href="NetBeans" title="NetBeans">NetBeans</a></li>
<li><a rel="nofollow" class="external text" href="http://demo.dzzd.net/Viewer3D/">Viewer3D</a>, une applet qui affiche du contenu interactif en 3D avec JOGL</li>
<li><a rel="nofollow" class="external text" href="http://sourceforge.net/projects/eclipse-opengl/">Eclipse OpenGL Pack</a> plug-in OpenGL pour l'EDI Eclipse</li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de la programmation informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2022-06-20" href="https://fr.wikipedia.org/wiki/?title=Java_OpenGL&oldid=194707138">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>